# Import libraries
import cv2
import numpy as np
import matplotlib.pyplot as plt
from math import sqrt
from numba import jit
np.seterr(divide='ignore', invalid='ignore')
# Load dataset
christ = cv2.imread('images/christ/christ.jpg', 0)
noise0 = cv2.imread('images/christ/noise0.jpg', 0)
noise1 = cv2.imread('images/christ/noise1.jpg', 0)
noise2 = cv2.imread('images/christ/noise2.jpg', 0)
noise3 = cv2.imread('images/christ/noise3.jpg', 0)
noise4 = cv2.imread('images/christ/noise4.jpg', 0)
noise5 = cv2.imread('images/christ/noise5.jpg', 0)
noise6 = cv2.imread('images/christ/noise6.jpg', 0)
plt.figure(figsize=(15,5))
ax1 = plt.subplot(121)
ax1.imshow(christ, cmap='gray')
ax2 = plt.subplot(122)
ax2.hist(christ.flatten(), bins=255)
ax1.axis('off')
ax1.text(0.5,-0.1, "Christ", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Hist", ha="center", transform=ax2.transAxes)
plt.figure(figsize=(15,5))
ax1 = plt.subplot(121)
ax1.imshow(noise0, cmap='gray')
ax2 = plt.subplot(122)
ax2.hist(noise0.flatten(), bins=255)
ax1.axis('off')
ax1.text(0.5,-0.1, "Noise 0", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Hist", ha="center", transform=ax2.transAxes)
plt.figure(figsize=(15,5))
ax1 = plt.subplot(121)
ax1.imshow(noise1, cmap='gray')
ax2 = plt.subplot(122)
ax2.hist(noise1.flatten(), bins=255)
ax1.axis('off')
ax1.text(0.5,-0.1, "Noise 1", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Hist", ha="center", transform=ax2.transAxes)
plt.figure(figsize=(15,5))
ax1 = plt.subplot(121)
ax1.imshow(noise2, cmap='gray')
ax2 = plt.subplot(122)
ax2.hist(noise2.flatten(), bins=255)
ax1.axis('off')
ax1.text(0.5,-0.1, "Noise 2", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Hist", ha="center", transform=ax2.transAxes)
plt.figure(figsize=(15,5))
ax1 = plt.subplot(121)
ax1.imshow(noise3, cmap='gray')
ax2 = plt.subplot(122)
ax2.hist(noise3.flatten(), bins=255)
ax1.axis('off')
ax1.text(0.5,-0.1, "Noise 3", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Hist", ha="center", transform=ax2.transAxes)
plt.figure(figsize=(15,5))
ax1 = plt.subplot(121)
ax1.imshow(noise4, cmap='gray')
ax2 = plt.subplot(122)
ax2.hist(noise4.flatten(), bins=255)
ax1.axis('off')
ax1.text(0.5,-0.1, "Noise 4", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Hist", ha="center", transform=ax2.transAxes)
plt.figure(figsize=(15,5))
ax1 = plt.subplot(121)
ax1.imshow(noise5, cmap='gray')
ax2 = plt.subplot(122)
ax2.hist(noise5.flatten(), bins=255)
ax1.axis('off')
ax1.text(0.5,-0.1, "Noise 5", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Hist", ha="center", transform=ax2.transAxes)
plt.figure(figsize=(15,5))
ax1 = plt.subplot(121)
ax1.imshow(noise6, cmap='gray')
ax2 = plt.subplot(122)
ax2.hist(noise6.flatten(), bins=255)
ax1.axis('off')
ax1.text(0.5,-0.1, "Noise 6", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Hist", ha="center", transform=ax2.transAxes)
# Load dataset
ibirapuera = cv2.imread('images/ibirapuera/ibirapuera.jpg', 0)
ruidoGaussiano = cv2.imread('images/ibirapuera/ruidoGaussiano.jpg', 0)
ruidoGaussianoSalPimenta = cv2.imread('images/ibirapuera/ruidoGaussianoSalPimenta.jpg', 0)
ruidoPimenta = cv2.imread('images/ibirapuera/ruidoPimenta.jpg', 0)
ruidoSal = cv2.imread('images/ibirapuera/ruidoSal.jpg', 0)
ruidoSalPimenta = cv2.imread('images/ibirapuera/ruidoSalPimenta.jpg', 0)
@jit
def geometric(img, sizew, sizeh):
kh,kw = sizeh, sizew
h,w = img.shape
rh = kh // 2
rw = kw // 2
border = cv2.copyMakeBorder(img, rh, rh, rw, rw, cv2.BORDER_DEFAULT)
result = img.copy()
for row in range(h):
for col in range(w):
result[row,col] = np.prod( border[row:row+rh,col:col+rw] ) ** ( 1 / (rw*rh) )
return result.astype('uint8')
@jit
def harmonic(img, sizew, sizeh):
kh,kw = sizeh, sizew
h,w = img.shape
rh = kh // 2
rw = kw // 2
border = cv2.copyMakeBorder(img, rh, rh, rw, rw, cv2.BORDER_DEFAULT)
result = img.copy()
for row in range(h):
for col in range(w):
numerator = kw*kh
denominator = np.sum( 1 / border[row:row+rh,col:col+rw] )
result[row,col] = 0 if denominator == 0 else numerator / denominator
return result.astype('uint8')
@jit
def counter_harmonic(img, sizew, sizeh, order):
kh,kw = sizeh, sizew
h,w = img.shape
rh = kh // 2
rw = kw // 2
border = cv2.copyMakeBorder(img, rh, rh, rw, rw, cv2.BORDER_DEFAULT)
result = img.copy()
for row in range(h):
for col in range(w):
numerator = np.sum( border[row:row+rh,col:col+rw] ** (order + 1) )
denominator = np.sum( border[row:row+rh,col:col+rw] ** order )
result[row,col] = 0 if denominator == 0 else numerator / denominator
return result.astype('uint8')
@jit
def max_filter(img, sizew, sizeh):
kh,kw = sizeh, sizew
h,w = img.shape
rh = kh // 2
rw = kw // 2
border = cv2.copyMakeBorder(img, rh, rh, rw, rw, cv2.BORDER_DEFAULT)
result = img.copy()
for row in range(h):
for col in range(w):
result[row,col] = border[row:row+rh,col:col+rw].max()
return result.astype('uint8')
@jit
def min_filter(img, sizew, sizeh):
kh,kw = sizeh, sizew
h,w = img.shape
rh = kh // 2
rw = kw // 2
border = cv2.copyMakeBorder(img, rh, rh, rw, rw, cv2.BORDER_DEFAULT)
result = img.copy()
for row in range(h):
for col in range(w):
result[row,col] = border[row:row+rh,col:col+rw].min()
return result.astype('uint8')
@jit
def mid_point(img, sizew, sizeh):
kh,kw = sizeh, sizew
h,w = img.shape
rh = kh // 2
rw = kw // 2
border = cv2.copyMakeBorder(img, rh, rh, rw, rw, cv2.BORDER_DEFAULT)
result = img.copy()
for row in range(h):
for col in range(w):
result[row,col] = (border[row:row+rh,col:col+rw].min() + border[row:row+rh,col:col+rw].max()) / 2
return result.astype('uint8')
@jit
def alpha_cut(img, sizew, sizeh, d):
kh,kw = sizeh, sizew
h,w = img.shape
rh = kh // 2
rw = kw // 2
border = cv2.copyMakeBorder(img, rh, rh, rw, rw, cv2.BORDER_DEFAULT)
result = img.copy()
for row in range(h):
for col in range(w):
flatten = border[row:row+rh,col:col+rw].flatten()
flatten.sort()
result[row,col] = 1 / ( kw*kh-d ) * sum( flatten[d//2:-(d//2)] )
return result.astype('uint8')
@jit
def rmse(img1, img2):
h,w = img1.shape
result = img1.astype('float') - img2.astype('float')
result = result ** 2
summation = np.sum(result) / (w*h)
return sqrt(summation)
blur3 = cv2.blur(ruidoGaussiano, (3,3))
blur5 = cv2.blur(ruidoGaussiano, (5,5))
blur7 = cv2.blur(ruidoGaussiano, (7,7))
blur9 = cv2.blur(ruidoGaussiano, (9,9))
geometric3 = geometric(ruidoGaussiano, 3,3)
geometric5 = geometric(ruidoGaussiano, 5,5)
geometric7 = geometric(ruidoGaussiano, 7,7)
geometric9 = geometric(ruidoGaussiano, 9,9)
harmonic3 = harmonic(ruidoGaussiano, 3,3)
harmonic5 = harmonic(ruidoGaussiano, 5,5)
harmonic7 = harmonic(ruidoGaussiano, 7,7)
harmonic9 = harmonic(ruidoGaussiano, 9,9)
counter_harmonic33 = counter_harmonic(ruidoGaussiano, 3,3,3)
counter_harmonic35 = counter_harmonic(ruidoGaussiano, 3,3,5)
counter_harmonic37 = counter_harmonic(ruidoGaussiano, 3,3,7)
counter_harmonic53 = counter_harmonic(ruidoGaussiano, 5,5,3)
counter_harmonic55 = counter_harmonic(ruidoGaussiano, 5,5,5)
counter_harmonic57 = counter_harmonic(ruidoGaussiano, 5,5,7)
counter_harmonic73 = counter_harmonic(ruidoGaussiano, 7,7,3)
counter_harmonic75 = counter_harmonic(ruidoGaussiano, 7,7,5)
counter_harmonic77 = counter_harmonic(ruidoGaussiano, 7,7,7)
counter_harmonic93 = counter_harmonic(ruidoGaussiano, 9,9,3)
counter_harmonic95 = counter_harmonic(ruidoGaussiano, 9,9,5)
counter_harmonic97 = counter_harmonic(ruidoGaussiano, 9,9,7)
median3 = cv2.medianBlur(ruidoGaussiano, 3)
median5 = cv2.medianBlur(ruidoGaussiano, 5)
median7 = cv2.medianBlur(ruidoGaussiano, 7)
median9 = cv2.medianBlur(ruidoGaussiano, 9)
max3 = max_filter(ruidoGaussiano, 3,3)
max5 = max_filter(ruidoGaussiano, 5,5)
max7 = max_filter(ruidoGaussiano, 7,7)
max9 = max_filter(ruidoGaussiano, 9,9)
min3 = min_filter(ruidoGaussiano, 3,3)
min5 = min_filter(ruidoGaussiano, 5,5)
min7 = min_filter(ruidoGaussiano, 7,7)
min9 = min_filter(ruidoGaussiano, 9,9)
mid_point3 = mid_point(ruidoGaussiano, 3,3)
mid_point5 = mid_point(ruidoGaussiano, 5,5)
mid_point7 = mid_point(ruidoGaussiano, 7,7)
mid_point9 = mid_point(ruidoGaussiano, 9,9)
alpha_cut31 = alpha_cut(ruidoGaussiano, 3,3,1)
alpha_cut32 = alpha_cut(ruidoGaussiano, 3,3,2)
alpha_cut33 = alpha_cut(ruidoGaussiano, 3,3,3)
alpha_cut51 = alpha_cut(ruidoGaussiano, 5,5,1)
alpha_cut52 = alpha_cut(ruidoGaussiano, 5,5,2)
alpha_cut53 = alpha_cut(ruidoGaussiano, 5,5,3)
alpha_cut71 = alpha_cut(ruidoGaussiano, 7,7,1)
alpha_cut72 = alpha_cut(ruidoGaussiano, 7,7,2)
alpha_cut73 = alpha_cut(ruidoGaussiano, 7,7,3)
alpha_cut91 = alpha_cut(ruidoGaussiano, 9,9,1)
alpha_cut92 = alpha_cut(ruidoGaussiano, 9,9,2)
alpha_cut93 = alpha_cut(ruidoGaussiano, 9,9,3)
print("blur3:", rmse(blur3, ibirapuera))
print("blur5:", rmse(blur5, ibirapuera))
print("blur7:", rmse(blur7, ibirapuera))
print("blur9:", rmse(blur9, ibirapuera))
print("geometric3:", rmse(geometric3, ibirapuera))
print("geometric5:", rmse(geometric5, ibirapuera))
print("geometric7:", rmse(geometric7, ibirapuera))
print("geometric9:", rmse(geometric9, ibirapuera))
print("harmonic3:", rmse(harmonic3, ibirapuera))
print("harmonic5:", rmse(harmonic5, ibirapuera))
print("harmonic7:", rmse(harmonic7, ibirapuera))
print("harmonic9:", rmse(harmonic9, ibirapuera))
print("counter_harmonic33:", rmse(counter_harmonic33, ibirapuera))
print("counter_harmonic35:", rmse(counter_harmonic35, ibirapuera))
print("counter_harmonic37:", rmse(counter_harmonic37, ibirapuera))
print("counter_harmonic53:", rmse(counter_harmonic53, ibirapuera))
print("counter_harmonic55:", rmse(counter_harmonic55, ibirapuera))
print("counter_harmonic57:", rmse(counter_harmonic57, ibirapuera))
print("counter_harmonic73:", rmse(counter_harmonic73, ibirapuera))
print("counter_harmonic75:", rmse(counter_harmonic75, ibirapuera))
print("counter_harmonic77:", rmse(counter_harmonic77, ibirapuera))
print("counter_harmonic93:", rmse(counter_harmonic93, ibirapuera))
print("counter_harmonic95:", rmse(counter_harmonic95, ibirapuera))
print("counter_harmonic97:", rmse(counter_harmonic97, ibirapuera))
print("median3:", rmse(median3, ibirapuera))
print("median5:", rmse(median5, ibirapuera))
print("median7:", rmse(median7, ibirapuera))
print("median9:", rmse(median9, ibirapuera))
print("max3:", rmse(max3, ibirapuera))
print("max5:", rmse(max5, ibirapuera))
print("max7:", rmse(max7, ibirapuera))
print("max9:", rmse(max9, ibirapuera))
print("min3:", rmse(min3, ibirapuera))
print("min5:", rmse(min5, ibirapuera))
print("min7:", rmse(min7, ibirapuera))
print("min9:", rmse(min9, ibirapuera))
print("mid_point3:", rmse(mid_point3, ibirapuera))
print("mid_point5:", rmse(mid_point5, ibirapuera))
print("mid_point7:", rmse(mid_point7, ibirapuera))
print("mid_point9:", rmse(mid_point9, ibirapuera))
print("alpha_cut31:", rmse(alpha_cut31, ibirapuera))
print("alpha_cut32:", rmse(alpha_cut32, ibirapuera))
print("alpha_cut33:", rmse(alpha_cut33, ibirapuera))
print("alpha_cut51:", rmse(alpha_cut51, ibirapuera))
print("alpha_cut52:", rmse(alpha_cut52, ibirapuera))
print("alpha_cut53:", rmse(alpha_cut53, ibirapuera))
print("alpha_cut71:", rmse(alpha_cut71, ibirapuera))
print("alpha_cut72:", rmse(alpha_cut72, ibirapuera))
print("alpha_cut73:", rmse(alpha_cut73, ibirapuera))
print("alpha_cut91:", rmse(alpha_cut91, ibirapuera))
print("alpha_cut92:", rmse(alpha_cut92, ibirapuera))
print("alpha_cut93:", rmse(alpha_cut93, ibirapuera))
plt.figure(figsize=(15,15))
ax1 = plt.subplot(311)
ax1.imshow(ibirapuera, cmap='gray')
ax2 = plt.subplot(312)
ax2.imshow(ruidoGaussiano, cmap='gray')
ax3 = plt.subplot(313)
ax3.imshow(median3, cmap='gray')
ax1.axis('off')
ax2.axis('off')
ax3.axis('off')
ax1.text(0.5,-0.1, "Ibirapuera", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Gaussian noise", ha="center", transform=ax2.transAxes)
ax3.text(0.5,-0.1, "Median filter 3x3", ha="center", transform=ax3.transAxes)
blur3 = cv2.blur(ruidoGaussianoSalPimenta, (3,3))
blur5 = cv2.blur(ruidoGaussianoSalPimenta, (5,5))
blur7 = cv2.blur(ruidoGaussianoSalPimenta, (7,7))
blur9 = cv2.blur(ruidoGaussianoSalPimenta, (9,9))
geometric3 = geometric(ruidoGaussianoSalPimenta, 3,3)
geometric5 = geometric(ruidoGaussianoSalPimenta, 5,5)
geometric7 = geometric(ruidoGaussianoSalPimenta, 7,7)
geometric9 = geometric(ruidoGaussianoSalPimenta, 9,9)
harmonic3 = harmonic(ruidoGaussianoSalPimenta, 3,3)
harmonic5 = harmonic(ruidoGaussianoSalPimenta, 5,5)
harmonic7 = harmonic(ruidoGaussianoSalPimenta, 7,7)
harmonic9 = harmonic(ruidoGaussianoSalPimenta, 9,9)
counter_harmonic33 = counter_harmonic(ruidoGaussianoSalPimenta, 3,3,3)
counter_harmonic35 = counter_harmonic(ruidoGaussianoSalPimenta, 3,3,5)
counter_harmonic37 = counter_harmonic(ruidoGaussianoSalPimenta, 3,3,7)
counter_harmonic53 = counter_harmonic(ruidoGaussianoSalPimenta, 5,5,3)
counter_harmonic55 = counter_harmonic(ruidoGaussianoSalPimenta, 5,5,5)
counter_harmonic57 = counter_harmonic(ruidoGaussianoSalPimenta, 5,5,7)
counter_harmonic73 = counter_harmonic(ruidoGaussianoSalPimenta, 7,7,3)
counter_harmonic75 = counter_harmonic(ruidoGaussianoSalPimenta, 7,7,5)
counter_harmonic77 = counter_harmonic(ruidoGaussianoSalPimenta, 7,7,7)
counter_harmonic93 = counter_harmonic(ruidoGaussianoSalPimenta, 9,9,3)
counter_harmonic95 = counter_harmonic(ruidoGaussianoSalPimenta, 9,9,5)
counter_harmonic97 = counter_harmonic(ruidoGaussianoSalPimenta, 9,9,7)
median3 = cv2.medianBlur(ruidoGaussianoSalPimenta, 3)
median5 = cv2.medianBlur(ruidoGaussianoSalPimenta, 5)
median7 = cv2.medianBlur(ruidoGaussianoSalPimenta, 7)
median9 = cv2.medianBlur(ruidoGaussianoSalPimenta, 9)
max3 = max_filter(ruidoGaussianoSalPimenta, 3,3)
max5 = max_filter(ruidoGaussianoSalPimenta, 5,5)
max7 = max_filter(ruidoGaussianoSalPimenta, 7,7)
max9 = max_filter(ruidoGaussianoSalPimenta, 9,9)
min3 = min_filter(ruidoGaussianoSalPimenta, 3,3)
min5 = min_filter(ruidoGaussianoSalPimenta, 5,5)
min7 = min_filter(ruidoGaussianoSalPimenta, 7,7)
min9 = min_filter(ruidoGaussianoSalPimenta, 9,9)
mid_point3 = mid_point(ruidoGaussianoSalPimenta, 3,3)
mid_point5 = mid_point(ruidoGaussianoSalPimenta, 5,5)
mid_point7 = mid_point(ruidoGaussianoSalPimenta, 7,7)
mid_point9 = mid_point(ruidoGaussianoSalPimenta, 9,9)
alpha_cut31 = alpha_cut(ruidoGaussianoSalPimenta, 3,3,1)
alpha_cut32 = alpha_cut(ruidoGaussianoSalPimenta, 3,3,2)
alpha_cut33 = alpha_cut(ruidoGaussianoSalPimenta, 3,3,3)
alpha_cut51 = alpha_cut(ruidoGaussianoSalPimenta, 5,5,1)
alpha_cut52 = alpha_cut(ruidoGaussianoSalPimenta, 5,5,2)
alpha_cut53 = alpha_cut(ruidoGaussianoSalPimenta, 5,5,3)
alpha_cut71 = alpha_cut(ruidoGaussianoSalPimenta, 7,7,1)
alpha_cut72 = alpha_cut(ruidoGaussianoSalPimenta, 7,7,2)
alpha_cut73 = alpha_cut(ruidoGaussianoSalPimenta, 7,7,3)
alpha_cut91 = alpha_cut(ruidoGaussianoSalPimenta, 9,9,1)
alpha_cut92 = alpha_cut(ruidoGaussianoSalPimenta, 9,9,2)
alpha_cut93 = alpha_cut(ruidoGaussianoSalPimenta, 9,9,3)
print("blur3:", rmse(blur3, ibirapuera))
print("blur5:", rmse(blur5, ibirapuera))
print("blur7:", rmse(blur7, ibirapuera))
print("blur9:", rmse(blur9, ibirapuera))
print("geometric3:", rmse(geometric3, ibirapuera))
print("geometric5:", rmse(geometric5, ibirapuera))
print("geometric7:", rmse(geometric7, ibirapuera))
print("geometric9:", rmse(geometric9, ibirapuera))
print("harmonic3:", rmse(harmonic3, ibirapuera))
print("harmonic5:", rmse(harmonic5, ibirapuera))
print("harmonic7:", rmse(harmonic7, ibirapuera))
print("harmonic9:", rmse(harmonic9, ibirapuera))
print("counter_harmonic33:", rmse(counter_harmonic33, ibirapuera))
print("counter_harmonic35:", rmse(counter_harmonic35, ibirapuera))
print("counter_harmonic37:", rmse(counter_harmonic37, ibirapuera))
print("counter_harmonic53:", rmse(counter_harmonic53, ibirapuera))
print("counter_harmonic55:", rmse(counter_harmonic55, ibirapuera))
print("counter_harmonic57:", rmse(counter_harmonic57, ibirapuera))
print("counter_harmonic73:", rmse(counter_harmonic73, ibirapuera))
print("counter_harmonic75:", rmse(counter_harmonic75, ibirapuera))
print("counter_harmonic77:", rmse(counter_harmonic77, ibirapuera))
print("counter_harmonic93:", rmse(counter_harmonic93, ibirapuera))
print("counter_harmonic95:", rmse(counter_harmonic95, ibirapuera))
print("counter_harmonic97:", rmse(counter_harmonic97, ibirapuera))
print("median3:", rmse(median3, ibirapuera))
print("median5:", rmse(median5, ibirapuera))
print("median7:", rmse(median7, ibirapuera))
print("median9:", rmse(median9, ibirapuera))
print("max3:", rmse(max3, ibirapuera))
print("max5:", rmse(max5, ibirapuera))
print("max7:", rmse(max7, ibirapuera))
print("max9:", rmse(max9, ibirapuera))
print("min3:", rmse(min3, ibirapuera))
print("min5:", rmse(min5, ibirapuera))
print("min7:", rmse(min7, ibirapuera))
print("min9:", rmse(min9, ibirapuera))
print("mid_point3:", rmse(mid_point3, ibirapuera))
print("mid_point5:", rmse(mid_point5, ibirapuera))
print("mid_point7:", rmse(mid_point7, ibirapuera))
print("mid_point9:", rmse(mid_point9, ibirapuera))
print("alpha_cut31:", rmse(alpha_cut31, ibirapuera))
print("alpha_cut32:", rmse(alpha_cut32, ibirapuera))
print("alpha_cut33:", rmse(alpha_cut33, ibirapuera))
print("alpha_cut51:", rmse(alpha_cut51, ibirapuera))
print("alpha_cut52:", rmse(alpha_cut52, ibirapuera))
print("alpha_cut53:", rmse(alpha_cut53, ibirapuera))
print("alpha_cut71:", rmse(alpha_cut71, ibirapuera))
print("alpha_cut72:", rmse(alpha_cut72, ibirapuera))
print("alpha_cut73:", rmse(alpha_cut73, ibirapuera))
print("alpha_cut91:", rmse(alpha_cut91, ibirapuera))
print("alpha_cut92:", rmse(alpha_cut92, ibirapuera))
print("alpha_cut93:", rmse(alpha_cut93, ibirapuera))
plt.figure(figsize=(15,15))
ax1 = plt.subplot(311)
ax1.imshow(ibirapuera, cmap='gray')
ax2 = plt.subplot(312)
ax2.imshow(ruidoGaussianoSalPimenta, cmap='gray')
ax3 = plt.subplot(313)
ax3.imshow(median3, cmap='gray')
ax1.axis('off')
ax2.axis('off')
ax3.axis('off')
ax1.text(0.5,-0.1, "Ibirapuera", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Gaussian noise with salt and pepper noise", ha="center", transform=ax2.transAxes)
ax3.text(0.5,-0.1, "Median filter 3x3", ha="center", transform=ax3.transAxes)
blur3 = cv2.blur(ruidoPimenta, (3,3))
blur5 = cv2.blur(ruidoPimenta, (5,5))
blur7 = cv2.blur(ruidoPimenta, (7,7))
blur9 = cv2.blur(ruidoPimenta, (9,9))
geometric3 = geometric(ruidoPimenta, 3,3)
geometric5 = geometric(ruidoPimenta, 5,5)
geometric7 = geometric(ruidoPimenta, 7,7)
geometric9 = geometric(ruidoPimenta, 9,9)
harmonic3 = harmonic(ruidoPimenta, 3,3)
harmonic5 = harmonic(ruidoPimenta, 5,5)
harmonic7 = harmonic(ruidoPimenta, 7,7)
harmonic9 = harmonic(ruidoPimenta, 9,9)
counter_harmonic33 = counter_harmonic(ruidoPimenta, 3,3,3)
counter_harmonic35 = counter_harmonic(ruidoPimenta, 3,3,5)
counter_harmonic37 = counter_harmonic(ruidoPimenta, 3,3,7)
counter_harmonic53 = counter_harmonic(ruidoPimenta, 5,5,3)
counter_harmonic55 = counter_harmonic(ruidoPimenta, 5,5,5)
counter_harmonic57 = counter_harmonic(ruidoPimenta, 5,5,7)
counter_harmonic73 = counter_harmonic(ruidoPimenta, 7,7,3)
counter_harmonic75 = counter_harmonic(ruidoPimenta, 7,7,5)
counter_harmonic77 = counter_harmonic(ruidoPimenta, 7,7,7)
counter_harmonic93 = counter_harmonic(ruidoPimenta, 9,9,3)
counter_harmonic95 = counter_harmonic(ruidoPimenta, 9,9,5)
counter_harmonic97 = counter_harmonic(ruidoPimenta, 9,9,7)
median3 = cv2.medianBlur(ruidoPimenta, 3)
median5 = cv2.medianBlur(ruidoPimenta, 5)
median7 = cv2.medianBlur(ruidoPimenta, 7)
median9 = cv2.medianBlur(ruidoPimenta, 9)
max3 = max_filter(ruidoPimenta, 3,3)
max5 = max_filter(ruidoPimenta, 5,5)
max7 = max_filter(ruidoPimenta, 7,7)
max9 = max_filter(ruidoPimenta, 9,9)
min3 = min_filter(ruidoPimenta, 3,3)
min5 = min_filter(ruidoPimenta, 5,5)
min7 = min_filter(ruidoPimenta, 7,7)
min9 = min_filter(ruidoPimenta, 9,9)
mid_point3 = mid_point(ruidoPimenta, 3,3)
mid_point5 = mid_point(ruidoPimenta, 5,5)
mid_point7 = mid_point(ruidoPimenta, 7,7)
mid_point9 = mid_point(ruidoPimenta, 9,9)
alpha_cut31 = alpha_cut(ruidoPimenta, 3,3,1)
alpha_cut32 = alpha_cut(ruidoPimenta, 3,3,2)
alpha_cut33 = alpha_cut(ruidoPimenta, 3,3,3)
alpha_cut51 = alpha_cut(ruidoPimenta, 5,5,1)
alpha_cut52 = alpha_cut(ruidoPimenta, 5,5,2)
alpha_cut53 = alpha_cut(ruidoPimenta, 5,5,3)
alpha_cut71 = alpha_cut(ruidoPimenta, 7,7,1)
alpha_cut72 = alpha_cut(ruidoPimenta, 7,7,2)
alpha_cut73 = alpha_cut(ruidoPimenta, 7,7,3)
alpha_cut91 = alpha_cut(ruidoPimenta, 9,9,1)
alpha_cut92 = alpha_cut(ruidoPimenta, 9,9,2)
alpha_cut93 = alpha_cut(ruidoPimenta, 9,9,3)
print("blur3:", rmse(blur3, ibirapuera))
print("blur5:", rmse(blur5, ibirapuera))
print("blur7:", rmse(blur7, ibirapuera))
print("blur9:", rmse(blur9, ibirapuera))
print("geometric3:", rmse(geometric3, ibirapuera))
print("geometric5:", rmse(geometric5, ibirapuera))
print("geometric7:", rmse(geometric7, ibirapuera))
print("geometric9:", rmse(geometric9, ibirapuera))
print("harmonic3:", rmse(harmonic3, ibirapuera))
print("harmonic5:", rmse(harmonic5, ibirapuera))
print("harmonic7:", rmse(harmonic7, ibirapuera))
print("harmonic9:", rmse(harmonic9, ibirapuera))
print("counter_harmonic33:", rmse(counter_harmonic33, ibirapuera))
print("counter_harmonic35:", rmse(counter_harmonic35, ibirapuera))
print("counter_harmonic37:", rmse(counter_harmonic37, ibirapuera))
print("counter_harmonic53:", rmse(counter_harmonic53, ibirapuera))
print("counter_harmonic55:", rmse(counter_harmonic55, ibirapuera))
print("counter_harmonic57:", rmse(counter_harmonic57, ibirapuera))
print("counter_harmonic73:", rmse(counter_harmonic73, ibirapuera))
print("counter_harmonic75:", rmse(counter_harmonic75, ibirapuera))
print("counter_harmonic77:", rmse(counter_harmonic77, ibirapuera))
print("counter_harmonic93:", rmse(counter_harmonic93, ibirapuera))
print("counter_harmonic95:", rmse(counter_harmonic95, ibirapuera))
print("counter_harmonic97:", rmse(counter_harmonic97, ibirapuera))
print("median3:", rmse(median3, ibirapuera))
print("median5:", rmse(median5, ibirapuera))
print("median7:", rmse(median7, ibirapuera))
print("median9:", rmse(median9, ibirapuera))
print("max3:", rmse(max3, ibirapuera))
print("max5:", rmse(max5, ibirapuera))
print("max7:", rmse(max7, ibirapuera))
print("max9:", rmse(max9, ibirapuera))
print("min3:", rmse(min3, ibirapuera))
print("min5:", rmse(min5, ibirapuera))
print("min7:", rmse(min7, ibirapuera))
print("min9:", rmse(min9, ibirapuera))
print("mid_point3:", rmse(mid_point3, ibirapuera))
print("mid_point5:", rmse(mid_point5, ibirapuera))
print("mid_point7:", rmse(mid_point7, ibirapuera))
print("mid_point9:", rmse(mid_point9, ibirapuera))
print("alpha_cut31:", rmse(alpha_cut31, ibirapuera))
print("alpha_cut32:", rmse(alpha_cut32, ibirapuera))
print("alpha_cut33:", rmse(alpha_cut33, ibirapuera))
print("alpha_cut51:", rmse(alpha_cut51, ibirapuera))
print("alpha_cut52:", rmse(alpha_cut52, ibirapuera))
print("alpha_cut53:", rmse(alpha_cut53, ibirapuera))
print("alpha_cut71:", rmse(alpha_cut71, ibirapuera))
print("alpha_cut72:", rmse(alpha_cut72, ibirapuera))
print("alpha_cut73:", rmse(alpha_cut73, ibirapuera))
print("alpha_cut91:", rmse(alpha_cut91, ibirapuera))
print("alpha_cut92:", rmse(alpha_cut92, ibirapuera))
print("alpha_cut93:", rmse(alpha_cut93, ibirapuera))
plt.figure(figsize=(15,15))
ax1 = plt.subplot(311)
ax1.imshow(ibirapuera, cmap='gray')
ax2 = plt.subplot(312)
ax2.imshow(ruidoPimenta, cmap='gray')
ax3 = plt.subplot(313)
ax3.imshow(median7, cmap='gray')
ax1.axis('off')
ax2.axis('off')
ax3.axis('off')
ax1.text(0.5,-0.1, "Ibirapuera", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Pepper noise", ha="center", transform=ax2.transAxes)
ax3.text(0.5,-0.1, "Median filter 7x7", ha="center", transform=ax3.transAxes)
blur3 = cv2.blur(ruidoSal, (3,3))
blur5 = cv2.blur(ruidoSal, (5,5))
blur7 = cv2.blur(ruidoSal, (7,7))
blur9 = cv2.blur(ruidoSal, (9,9))
geometric3 = geometric(ruidoSal, 3,3)
geometric5 = geometric(ruidoSal, 5,5)
geometric7 = geometric(ruidoSal, 7,7)
geometric9 = geometric(ruidoSal, 9,9)
harmonic3 = harmonic(ruidoSal, 3,3)
harmonic5 = harmonic(ruidoSal, 5,5)
harmonic7 = harmonic(ruidoSal, 7,7)
harmonic9 = harmonic(ruidoSal, 9,9)
counter_harmonic33 = counter_harmonic(ruidoSal, 3,3,3)
counter_harmonic35 = counter_harmonic(ruidoSal, 3,3,5)
counter_harmonic37 = counter_harmonic(ruidoSal, 3,3,7)
counter_harmonic53 = counter_harmonic(ruidoSal, 5,5,3)
counter_harmonic55 = counter_harmonic(ruidoSal, 5,5,5)
counter_harmonic57 = counter_harmonic(ruidoSal, 5,5,7)
counter_harmonic73 = counter_harmonic(ruidoSal, 7,7,3)
counter_harmonic75 = counter_harmonic(ruidoSal, 7,7,5)
counter_harmonic77 = counter_harmonic(ruidoSal, 7,7,7)
counter_harmonic93 = counter_harmonic(ruidoSal, 9,9,3)
counter_harmonic95 = counter_harmonic(ruidoSal, 9,9,5)
counter_harmonic97 = counter_harmonic(ruidoSal, 9,9,7)
median3 = cv2.medianBlur(ruidoSal, 3)
median5 = cv2.medianBlur(ruidoSal, 5)
median7 = cv2.medianBlur(ruidoSal, 7)
median9 = cv2.medianBlur(ruidoSal, 9)
max3 = max_filter(ruidoSal, 3,3)
max5 = max_filter(ruidoSal, 5,5)
max7 = max_filter(ruidoSal, 7,7)
max9 = max_filter(ruidoSal, 9,9)
min3 = min_filter(ruidoSal, 3,3)
min5 = min_filter(ruidoSal, 5,5)
min7 = min_filter(ruidoSal, 7,7)
min9 = min_filter(ruidoSal, 9,9)
mid_point3 = mid_point(ruidoSal, 3,3)
mid_point5 = mid_point(ruidoSal, 5,5)
mid_point7 = mid_point(ruidoSal, 7,7)
mid_point9 = mid_point(ruidoSal, 9,9)
alpha_cut31 = alpha_cut(ruidoSal, 3,3,1)
alpha_cut32 = alpha_cut(ruidoSal, 3,3,2)
alpha_cut33 = alpha_cut(ruidoSal, 3,3,3)
alpha_cut51 = alpha_cut(ruidoSal, 5,5,1)
alpha_cut52 = alpha_cut(ruidoSal, 5,5,2)
alpha_cut53 = alpha_cut(ruidoSal, 5,5,3)
alpha_cut71 = alpha_cut(ruidoSal, 7,7,1)
alpha_cut72 = alpha_cut(ruidoSal, 7,7,2)
alpha_cut73 = alpha_cut(ruidoSal, 7,7,3)
alpha_cut91 = alpha_cut(ruidoSal, 9,9,1)
alpha_cut92 = alpha_cut(ruidoSal, 9,9,2)
alpha_cut93 = alpha_cut(ruidoSal, 9,9,3)
print("blur3:", rmse(blur3, ibirapuera))
print("blur5:", rmse(blur5, ibirapuera))
print("blur7:", rmse(blur7, ibirapuera))
print("blur9:", rmse(blur9, ibirapuera))
print("geometric3:", rmse(geometric3, ibirapuera))
print("geometric5:", rmse(geometric5, ibirapuera))
print("geometric7:", rmse(geometric7, ibirapuera))
print("geometric9:", rmse(geometric9, ibirapuera))
print("harmonic3:", rmse(harmonic3, ibirapuera))
print("harmonic5:", rmse(harmonic5, ibirapuera))
print("harmonic7:", rmse(harmonic7, ibirapuera))
print("harmonic9:", rmse(harmonic9, ibirapuera))
print("counter_harmonic33:", rmse(counter_harmonic33, ibirapuera))
print("counter_harmonic35:", rmse(counter_harmonic35, ibirapuera))
print("counter_harmonic37:", rmse(counter_harmonic37, ibirapuera))
print("counter_harmonic53:", rmse(counter_harmonic53, ibirapuera))
print("counter_harmonic55:", rmse(counter_harmonic55, ibirapuera))
print("counter_harmonic57:", rmse(counter_harmonic57, ibirapuera))
print("counter_harmonic73:", rmse(counter_harmonic73, ibirapuera))
print("counter_harmonic75:", rmse(counter_harmonic75, ibirapuera))
print("counter_harmonic77:", rmse(counter_harmonic77, ibirapuera))
print("counter_harmonic93:", rmse(counter_harmonic93, ibirapuera))
print("counter_harmonic95:", rmse(counter_harmonic95, ibirapuera))
print("counter_harmonic97:", rmse(counter_harmonic97, ibirapuera))
print("median3:", rmse(median3, ibirapuera))
print("median5:", rmse(median5, ibirapuera))
print("median7:", rmse(median7, ibirapuera))
print("median9:", rmse(median9, ibirapuera))
print("max3:", rmse(max3, ibirapuera))
print("max5:", rmse(max5, ibirapuera))
print("max7:", rmse(max7, ibirapuera))
print("max9:", rmse(max9, ibirapuera))
print("min3:", rmse(min3, ibirapuera))
print("min5:", rmse(min5, ibirapuera))
print("min7:", rmse(min7, ibirapuera))
print("min9:", rmse(min9, ibirapuera))
print("mid_point3:", rmse(mid_point3, ibirapuera))
print("mid_point5:", rmse(mid_point5, ibirapuera))
print("mid_point7:", rmse(mid_point7, ibirapuera))
print("mid_point9:", rmse(mid_point9, ibirapuera))
print("alpha_cut31:", rmse(alpha_cut31, ibirapuera))
print("alpha_cut32:", rmse(alpha_cut32, ibirapuera))
print("alpha_cut33:", rmse(alpha_cut33, ibirapuera))
print("alpha_cut51:", rmse(alpha_cut51, ibirapuera))
print("alpha_cut52:", rmse(alpha_cut52, ibirapuera))
print("alpha_cut53:", rmse(alpha_cut53, ibirapuera))
print("alpha_cut71:", rmse(alpha_cut71, ibirapuera))
print("alpha_cut72:", rmse(alpha_cut72, ibirapuera))
print("alpha_cut73:", rmse(alpha_cut73, ibirapuera))
print("alpha_cut91:", rmse(alpha_cut91, ibirapuera))
print("alpha_cut92:", rmse(alpha_cut92, ibirapuera))
print("alpha_cut93:", rmse(alpha_cut93, ibirapuera))
plt.figure(figsize=(15,15))
ax1 = plt.subplot(311)
ax1.imshow(ibirapuera, cmap='gray')
ax2 = plt.subplot(312)
ax2.imshow(ruidoSal, cmap='gray')
ax3 = plt.subplot(313)
ax3.imshow(median7, cmap='gray')
ax1.axis('off')
ax2.axis('off')
ax3.axis('off')
ax1.text(0.5,-0.1, "Ibirapuera", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Salt noise", ha="center", transform=ax2.transAxes)
ax3.text(0.5,-0.1, "Median filter 7x7", ha="center", transform=ax3.transAxes)
blur3 = cv2.blur(ruidoSalPimenta, (3,3))
blur5 = cv2.blur(ruidoSalPimenta, (5,5))
blur7 = cv2.blur(ruidoSalPimenta, (7,7))
blur9 = cv2.blur(ruidoSalPimenta, (9,9))
geometric3 = geometric(ruidoSalPimenta, 3,3)
geometric5 = geometric(ruidoSalPimenta, 5,5)
geometric7 = geometric(ruidoSalPimenta, 7,7)
geometric9 = geometric(ruidoSalPimenta, 9,9)
harmonic3 = harmonic(ruidoSalPimenta, 3,3)
harmonic5 = harmonic(ruidoSalPimenta, 5,5)
harmonic7 = harmonic(ruidoSalPimenta, 7,7)
harmonic9 = harmonic(ruidoSalPimenta, 9,9)
counter_harmonic33 = counter_harmonic(ruidoSalPimenta, 3,3,3)
counter_harmonic35 = counter_harmonic(ruidoSalPimenta, 3,3,5)
counter_harmonic37 = counter_harmonic(ruidoSalPimenta, 3,3,7)
counter_harmonic53 = counter_harmonic(ruidoSalPimenta, 5,5,3)
counter_harmonic55 = counter_harmonic(ruidoSalPimenta, 5,5,5)
counter_harmonic57 = counter_harmonic(ruidoSalPimenta, 5,5,7)
counter_harmonic73 = counter_harmonic(ruidoSalPimenta, 7,7,3)
counter_harmonic75 = counter_harmonic(ruidoSalPimenta, 7,7,5)
counter_harmonic77 = counter_harmonic(ruidoSalPimenta, 7,7,7)
counter_harmonic93 = counter_harmonic(ruidoSalPimenta, 9,9,3)
counter_harmonic95 = counter_harmonic(ruidoSalPimenta, 9,9,5)
counter_harmonic97 = counter_harmonic(ruidoSalPimenta, 9,9,7)
median3 = cv2.medianBlur(ruidoSalPimenta, 3)
median5 = cv2.medianBlur(ruidoSalPimenta, 5)
median7 = cv2.medianBlur(ruidoSalPimenta, 7)
median9 = cv2.medianBlur(ruidoSalPimenta, 9)
max3 = max_filter(ruidoSalPimenta, 3,3)
max5 = max_filter(ruidoSalPimenta, 5,5)
max7 = max_filter(ruidoSalPimenta, 7,7)
max9 = max_filter(ruidoSalPimenta, 9,9)
min3 = min_filter(ruidoSalPimenta, 3,3)
min5 = min_filter(ruidoSalPimenta, 5,5)
min7 = min_filter(ruidoSalPimenta, 7,7)
min9 = min_filter(ruidoSalPimenta, 9,9)
mid_point3 = mid_point(ruidoSalPimenta, 3,3)
mid_point5 = mid_point(ruidoSalPimenta, 5,5)
mid_point7 = mid_point(ruidoSalPimenta, 7,7)
mid_point9 = mid_point(ruidoSalPimenta, 9,9)
alpha_cut31 = alpha_cut(ruidoSalPimenta, 3,3,1)
alpha_cut32 = alpha_cut(ruidoSalPimenta, 3,3,2)
alpha_cut33 = alpha_cut(ruidoSalPimenta, 3,3,3)
alpha_cut51 = alpha_cut(ruidoSalPimenta, 5,5,1)
alpha_cut52 = alpha_cut(ruidoSalPimenta, 5,5,2)
alpha_cut53 = alpha_cut(ruidoSalPimenta, 5,5,3)
alpha_cut71 = alpha_cut(ruidoSalPimenta, 7,7,1)
alpha_cut72 = alpha_cut(ruidoSalPimenta, 7,7,2)
alpha_cut73 = alpha_cut(ruidoSalPimenta, 7,7,3)
alpha_cut91 = alpha_cut(ruidoSalPimenta, 9,9,1)
alpha_cut92 = alpha_cut(ruidoSalPimenta, 9,9,2)
alpha_cut93 = alpha_cut(ruidoSalPimenta, 9,9,3)
print("blur3:", rmse(blur3, ibirapuera))
print("blur5:", rmse(blur5, ibirapuera))
print("blur7:", rmse(blur7, ibirapuera))
print("blur9:", rmse(blur9, ibirapuera))
print("geometric3:", rmse(geometric3, ibirapuera))
print("geometric5:", rmse(geometric5, ibirapuera))
print("geometric7:", rmse(geometric7, ibirapuera))
print("geometric9:", rmse(geometric9, ibirapuera))
print("harmonic3:", rmse(harmonic3, ibirapuera))
print("harmonic5:", rmse(harmonic5, ibirapuera))
print("harmonic7:", rmse(harmonic7, ibirapuera))
print("harmonic9:", rmse(harmonic9, ibirapuera))
print("counter_harmonic33:", rmse(counter_harmonic33, ibirapuera))
print("counter_harmonic35:", rmse(counter_harmonic35, ibirapuera))
print("counter_harmonic37:", rmse(counter_harmonic37, ibirapuera))
print("counter_harmonic53:", rmse(counter_harmonic53, ibirapuera))
print("counter_harmonic55:", rmse(counter_harmonic55, ibirapuera))
print("counter_harmonic57:", rmse(counter_harmonic57, ibirapuera))
print("counter_harmonic73:", rmse(counter_harmonic73, ibirapuera))
print("counter_harmonic75:", rmse(counter_harmonic75, ibirapuera))
print("counter_harmonic77:", rmse(counter_harmonic77, ibirapuera))
print("counter_harmonic93:", rmse(counter_harmonic93, ibirapuera))
print("counter_harmonic95:", rmse(counter_harmonic95, ibirapuera))
print("counter_harmonic97:", rmse(counter_harmonic97, ibirapuera))
print("median3:", rmse(median3, ibirapuera))
print("median5:", rmse(median5, ibirapuera))
print("median7:", rmse(median7, ibirapuera))
print("median9:", rmse(median9, ibirapuera))
print("max3:", rmse(max3, ibirapuera))
print("max5:", rmse(max5, ibirapuera))
print("max7:", rmse(max7, ibirapuera))
print("max9:", rmse(max9, ibirapuera))
print("min3:", rmse(min3, ibirapuera))
print("min5:", rmse(min5, ibirapuera))
print("min7:", rmse(min7, ibirapuera))
print("min9:", rmse(min9, ibirapuera))
print("mid_point3:", rmse(mid_point3, ibirapuera))
print("mid_point5:", rmse(mid_point5, ibirapuera))
print("mid_point7:", rmse(mid_point7, ibirapuera))
print("mid_point9:", rmse(mid_point9, ibirapuera))
print("alpha_cut31:", rmse(alpha_cut31, ibirapuera))
print("alpha_cut32:", rmse(alpha_cut32, ibirapuera))
print("alpha_cut33:", rmse(alpha_cut33, ibirapuera))
print("alpha_cut51:", rmse(alpha_cut51, ibirapuera))
print("alpha_cut52:", rmse(alpha_cut52, ibirapuera))
print("alpha_cut53:", rmse(alpha_cut53, ibirapuera))
print("alpha_cut71:", rmse(alpha_cut71, ibirapuera))
print("alpha_cut72:", rmse(alpha_cut72, ibirapuera))
print("alpha_cut73:", rmse(alpha_cut73, ibirapuera))
print("alpha_cut91:", rmse(alpha_cut91, ibirapuera))
print("alpha_cut92:", rmse(alpha_cut92, ibirapuera))
print("alpha_cut93:", rmse(alpha_cut93, ibirapuera))
plt.figure(figsize=(15,15))
ax1 = plt.subplot(311)
ax1.imshow(ibirapuera, cmap='gray')
ax2 = plt.subplot(312)
ax2.imshow(ruidoSalPimenta, cmap='gray')
ax3 = plt.subplot(313)
ax3.imshow(median3, cmap='gray')
ax1.axis('off')
ax2.axis('off')
ax3.axis('off')
ax1.text(0.5,-0.1, "Ibirapuera", ha="center", transform=ax1.transAxes)
ax2.text(0.5,-0.1, "Salt and pepper noise", ha="center", transform=ax2.transAxes)
ax3.text(0.5,-0.1, "Median filter 3x3", ha="center", transform=ax3.transAxes)